home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / Information / CSMP Digest / volume 1 / csmp-v1-121.txt < prev    next >
Encoding:
Text File  |  1994-12-08  |  47.9 KB  |  1,192 lines  |  [TEXT/R*ch]

  1. C.S.M.P. Digest             Mon, 22 Jun 92       Volume 1 : Issue 121
  2.  
  3. Today's Topics:
  4.  
  5.     In Search Of QuickTime
  6.     Can you disable the FKEY3 resource?
  7.     John Calhoun's Glypha3 source
  8.     Anyone used XVT (esp. XVT++)?
  9.     FOR SALE: TMON Professional
  10.     Determining if user has a printer selected ???
  11.     Yerk 3.62 available
  12.     Icon Families and Icon Suites
  13.  
  14.  
  15. The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
  16.  
  17. These digests are available (by using FTP, account anonymous, your email
  18. address as password) in the pub/mac/csmp-digest directory on ftp.cs.uoregon.
  19. edu.  This is also the home of the comp.sys.mac.programmer Frequently Asked
  20. Questions list.  The last several issues of the digest are available from
  21. sumex-aim.stanford.edu as well.
  22.  
  23. These digests are also available via email.  Just send a note saying that you
  24. want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
  25. automatically receive each new digest as it is created.
  26.  
  27. The digest is a collection of articles from the internet newsgroup comp.sys.
  28. mac.programmer.  It is designed for people who read c.s.m.p. semi-regularly
  29. and want an archive of the discussions.  If you don't know what a newsgroup
  30. is, you probably don't have access to it.  Ask your systems administrator(s)
  31. for details.  (This means you can't post questions to the digest.)
  32.  
  33. The articles in these digests are taken directly from comp.sys.mac.programmer.
  34. They are not edited; all articles included in this digest are in their original
  35. posted form.  The only articles that are -not- included in these digests are
  36. those which didn't receive any replies (except those that give information
  37. rather than ask a question).  All replies to each article are concatenated
  38. onto the original article in the order in which they were received.  Article
  39. threads are not added to the digests until the last article added to the
  40. thread is at least one month old (this is to ensure that the thread is dead
  41. before adding it to the digests).
  42.  
  43. Send administrative mail to mkelly@cs.uoregon.edu.
  44.  
  45. -------------------------------------------------------
  46.  
  47. From: bruce@pages.com (Bruce Henderson)
  48. Subject: In Search Of QuickTime
  49. Date: 19 May 92 01:17:12 GMT
  50. Organization: Banzai Research Institute
  51.  
  52. Where can I get the File Format for the QuickTime file(s) type(s)?  If you know  
  53. or have it, please E-Mail me because I don't read this group regularly.
  54.  
  55. Thanks
  56.  
  57. Bruce Henderson
  58. bruce@pages.com
  59.  
  60. +++++++++++++++++++++++++++
  61.  
  62. From: parsons1@applelink.apple.COM (Don Parsons)
  63. Date: 21 May 92 01:14:09 GMT
  64. Organization: Apple Computer, Inc.
  65.  
  66. In article <1992May19.011712.3637@pages.com>, bruce@pages.com (Bruce Henderson) writes:
  67. > Where can I get the File Format for the QuickTime file(s) type(s)?  If you know  
  68. > or have it, please E-Mail me because I don't read this group regularly.
  69. > Thanks
  70. > Bruce Henderson
  71. > bruce@pages.com
  72.  
  73.  
  74. The information that you want is in a package that is available through
  75. the Apple Programmers and Developers Assn (APDA). It is called the
  76. QuickTime Developer Kit. It includes the written documentation and a CD-ROM.
  77. The CD-ROM has the QT software, utilities, samples, header/include files, etc.
  78. There is also a package called the Quicktime Movie Exchange Toolkit, this
  79. has information and resources for implementing QuickTime file format support
  80. on other platforms.
  81.  
  82. Specific information you will need is as follows:
  83.  
  84. R0147LLA     Quicktime Developer Kit v.1.0                         $195.00
  85. R0190LLA    *Quicktime Movie Exchange Toolkit                       $79.00
  86.  
  87.  
  88. HOW TO ORDER
  89. ************
  90.  
  91. APDA offers convenient worldwide access to over 400 development tools,
  92. resources, training products and information for anyone interested in
  93. developing applications on Apple platforms.
  94.  
  95. LIST OF AVAILABLE APDA PRODUCTS
  96. Customers can contact APDA for a complimentary copy of the APDA Tools Catalog
  97. or view an APDA product list on AppleLink.
  98.  
  99. ORDERING FORMS
  100. Ordering forms are available in the APDA Tools Catalog or on AppleLink.
  101.  
  102. If you are interested in purchasing beta (product that has not been finalized),
  103. a completed and signed APDA Terms & Conditions form, found in the APDA Tools
  104. Catalog, must be on file or accompany an order which includes a non Class 1
  105. product.  This form need only be completed once, as it will remain current in
  106. our files.  Non Class 1 products are starred in the on-line price lists.
  107. *See the file "APDA Terms & Conditions".
  108.  
  109. International customers must have a letter of assurance on file before ordering
  110. products.  *See the "Forms for International Customers" file.
  111.  
  112. ORDERING FORMATS
  113. You can order APDA products by electronic mail, regular mail, or by telephone.
  114. Note: Our customer service representatives cannot provide technical support.
  115.  
  116. % Electronic Mail
  117. Orders can also be placed via the following services and electronic mail
  118. addresses listed below.  Orders are downloaded daily.
  119.  
  120. AppleLink: APDA
  121. MacNet: APDA
  122. GEnie: A.DEVELOPER3
  123. MCI: POSTROM
  124. CompuServe: 76666,2405
  125. Internet: APDA@applelink.apple.com
  126.  
  127. % Mail
  128. Send APDA orders or inquiries to:
  129. APDA
  130. Apple Computer, Inc.
  131. 20525 Mariani Avenue, M/S: 33G
  132. Cupertino, CA  95014-6299
  133.  
  134. % Phone
  135. The following numbers are available for APDA product phone orders:
  136.  
  137. U.S.                    1-800-282-2732
  138. Canada                  1-800-637-0029
  139. International           1-408-562-3910
  140. FAX                     1-408-562-3971
  141. TELEX                   171-576
  142.  
  143. The phone lines are staffed Monday through Friday, 7:00 a.m. to 5:00 p.m.,
  144. Pacific Standard Time. After hour orders can be placed on our recording
  145. machine.
  146.  
  147.  
  148. PAYMENT METHODS
  149. APDA accepts MasterCard, VISA, American Express, or AppleCredit cards. Please
  150. be sure to include your card's expiration date when ordering. We also
  151. accept checks (on U.S. banks, in U.S. dollars).
  152.  
  153. We accept purchase orders with a minimum of $50 from U.S. corporations,
  154. agencies, or schools only. APDA must receive an original hard-copy P.O. before
  155. releasing any orders. All authorized individuals who can charge to the P.O.
  156. should be listed for your protection.
  157. *See the "Purchase Order Terms & Conditions" file for further information.
  158.  
  159.  
  160.  
  161. SHIPPING & HANDLING
  162. U.S. Destinations: There is now a choice of delivery methods: Surface (UPS
  163. Ground), Airborne, or Overnight Express (second day may be required).
  164. Additionally, we will use First Class U.S. Mail for deliveries to all APOs,
  165. FPOs, and PO Boxes. Your shipping charge is based on the table below. On mail
  166. orders please remember to indicate which shipping method you prefer, or we will
  167. default to surface. Surface delivery can take from 5-7 working days for
  168. coast-to-coast.
  169.  
  170. Shipping and Handling for U.S. Orders
  171.  
  172. Product Order $$          Surface        Air
  173.  
  174.    $1-$100                  $3           $8
  175.    $101-$200                $5           $15
  176.    $201-$400                $8           $25
  177.    $401-$600                $11          $35
  178.    $601-$1,000              $15          $60
  179.    over $1,000              $25          $100
  180.  
  181. International Destinations: The standard shipping method for international
  182. orders is air express via TNT or Federal Express (Canada only). Please allow
  183. 24-48 hours for your order to clear customs. Companies or groups using the
  184. services of a customs broker should provide the broker's name and telephone
  185. number with the order. Large orders may qualify for Rdeferred air service at
  186. substantially lower rates. Total time from departure through customs is 5-7
  187. working days. Please request information about this service from our customer
  188. service staff.
  189.  
  190. If you have ordered E.T.O. or APDA Developer Mailing, additional shipping
  191. charges apply.  E.T.O.: U.S.-$15, Canada-$40, other countries-$100.  APDA
  192. Technical Information mailing: U.S.-$30, Canada-$80, other countries-$200.
  193. Please add these amounts to the above shipping charges on the order form.
  194.  
  195.  
  196. POLICIES
  197. % Returns
  198. APDA accepts returns at any time, for any reason.  Please reference the back of
  199. your packing slip for details.  You will need to include the packing slip with
  200. the returned merchandise.  At your option, we will gladly replace your shipment
  201. at no charge or issue a refund against your original payment method.
  202.  
  203. % Upgrades
  204. Upgrade policies vary from product to product.  While the purchase of some
  205. products guarantees an upgrade to the next version, the purchase of others
  206. might not have that same guarantee.
  207.  
  208. % Purchase Protection
  209. To protect your investment in development tools, we offer 30-day purchase
  210. protection for all Apple-labeled products.  If within 30 days of the date you
  211. purchase a product, we begin taking orders for a new version of that product,
  212. you will automatically receive the update version at no additional charge.
  213.  
  214.  
  215. Developer Support
  216. Developer Services
  217. APDA - Tools for Developers
  218. Price Lists & Ordering Information
  219. 9-10-91
  220.  
  221.  
  222.  
  223.  
  224. ---------------------------
  225.  
  226. From: filibert@vista (Daniel Filiberti)
  227. Subject: Can you disable the FKEY3 resource?
  228. Date: 14 May 92 18:44:08 GMT
  229. Organization: Oregon Health Sciences University
  230.  
  231. Hi Everyone!
  232.  
  233. Is it possible to disable the FKEY 3 system resource that
  234. allows snapshots of the screen in System 7?
  235.  
  236. Also, can bg processes be disabled by some other means
  237. other than using the parameters to WaitNextEvent? 
  238.  
  239. Thanks,
  240.  
  241. Daniel
  242.  
  243. - --
  244. ************************************************************
  245. Motto for a monitor, "It's better to burn out, than to fade
  246.  away..."  [8?)}
  247. ************************************************************
  248.  
  249. Daniel Filiberti
  250. filibert@ohsu.edu
  251.  
  252. +++++++++++++++++++++++++++
  253.  
  254. From: unity@mcl.mcl.ucsb.edu (Pete Gontier)
  255. Date: 20 May 92 17:17:29 GMT
  256.  
  257. In <1992May14.184408.7518@ohsu.edu> filibert@vista (Daniel Filiberti) writes:
  258. >Is it possible to disable the FKEY 3 system resource that
  259. >allows snapshots of the screen in System 7?
  260.  
  261. Low memory: ScrDmpEnb at 0x02F8 is a boolean byte. Beware, it really
  262. disables *all* FKEYs, not just FKEY 3. If you want to disable FKEY 3
  263. permanently, chop it out of the System file. But you would have
  264. thought of that already had it been your aim.
  265.  
  266. >Also, can bg processes be disabled by some other means
  267. >other than using the parameters to WaitNextEvent?
  268.  
  269. Too vague. Try again.
  270. - --
  271.  Pete Gontier // EC Technology // unity@mcl.ucsb.edu
  272.  
  273. +++++++++++++++++++++++++++
  274.  
  275. From: mxmora@unix.SRI.COM (Matt Mora)
  276. Date: 19 May 92 17:01:03 GMT
  277. Organization: SRI International, Menlo Park, California
  278.  
  279. In article <1992May14.184408.7518@ohsu.edu> filibert@ohsu.edu writes:
  280. >Hi Everyone!
  281. >
  282. >Is it possible to disable the FKEY 3 system resource that
  283. >allows snapshots of the screen in System 7?
  284.  
  285. If you want to do it in an application just add an fkey resource
  286. of id 3 in your app that does nothing. Also I think there is a low
  287. memory global you can set to not launch any fkeys. I think
  288. it was used by fkeys so that the user does not re-enter the
  289. same fkey or launch two at once. I wish I could remember the name
  290. of the global. Maybe I should have asked this question at the
  291. "Stump the experts" session at the WWDC. :-)
  292.  
  293. >Also, can bg processes be disabled by some other means
  294. >other than using the parameters to WaitNextEvent? 
  295.  
  296. Don't know about disabling them. You can kill them or wake them up.
  297. You might be able to hide them (though its not documented).
  298. Look at the Process manager chapter in IM vol 6.
  299.  
  300.  
  301. Matt
  302.  
  303.  
  304.  
  305. - -- 
  306. ___________________________________________________________
  307. Matthew Mora                |   my Mac  Matt_Mora@sri.com
  308. SRI International           |  my unix  mxmora@unix.sri.com
  309. ___________________________________________________________
  310.  
  311. +++++++++++++++++++++++++++
  312.  
  313. From: unity@mcl.mcl.ucsb.edu (Pete Gontier)
  314. Date: 21 May 92 05:32:15 GMT
  315.  
  316. In <35158@unix.SRI.COM> mxmora@unix.SRI.COM (Matt Mora) writes:
  317.  
  318. >of the global. Maybe I should have asked this question at the
  319. >"Stump the experts" session at the WWDC. :-)
  320.  
  321. Woo woo! I'm an expert! Look ma, I'm an expert! I'm an expert! Woo woo!
  322. - --
  323.  Pete Gontier // EC Technology // unity@mcl.ucsb.edu
  324.  
  325. ---------------------------
  326.  
  327. From: sc@argentic.uucp (Sterling Chipperfield)
  328. Subject: John Calhoun's Glypha3 source
  329. Date: Sat, 16 May 92 22:7:54 EST
  330. Organization: Argentic BBS [Toronto, Ontario, Canada]
  331.  
  332. I tried to compile this source with THINK Pascal 4.0 updated to 4.0.1
  333. and while compiling this routine I got a Type Incompatibility error:
  334.         
  335.  procedure CheckTheKeyboard;
  336.   var
  337.    keyState: KeyMap;
  338.  begin
  339.   keyStillDown := FALSE;
  340.   GetKeys(keyState);
  341.   if (keyState[0] = 16777216) or (keyState[0] = 33554432) then
  342.    keyStillDown := TRUE
  343.   else
  344.    begin
  345.     if ((keyState[1] > 131071) and (keyState[1] < 131075)) then
  346.      keyStillDown := TRUE
  347.     else if ((keyState[1] > -2147483649) and (keyState[1] < -2147483645))
  348. then
  349.      keyStillDown := TRUE;
  350.    end;
  351.  end;
  352.         
  353. The error was on the 7th line (beginning with if (keyState[0]....)
  354. When I checked my IM I on page 260 it says that:
  355.         
  356. TYPE KeyMap = PACKED ARRAY[0..127] OF BOOLEAN;
  357.         
  358. I have seen the compiled game Glypha, so I know it compiles on John's
  359. machine, but why? or why not on my machine?
  360.         
  361.         _____________________        ________________________
  362.         Sterling Chipperfield        Toronto, Ontario, Canada
  363.          sc@argentic.gts.org            V: 1-416-269-5335
  364.            sc@argentic.uucp             D: 1-416-265-4025
  365.         _____________________        ________________________
  366.  
  367. +++++++++++++++++++++++++++
  368.  
  369. From: mxmora@unix.SRI.COM (Matt Mora)
  370. Date: 19 May 92 17:11:27 GMT
  371. Organization: SRI International, Menlo Park, California
  372.  
  373. In article <1619@argentic.uucp> sc@argentic.uucp (Sterling Chipperfield) writes:
  374. >I tried to compile this source with THINK Pascal 4.0 updated to 4.0.1
  375. >and while compiling this routine I got a Type Incompatibility error:
  376.  
  377. > procedure CheckTheKeyboard;
  378. >  var
  379. >   keyState: KeyMap;
  380. > begin
  381. >  keyStillDown := FALSE;
  382. >  GetKeys(keyState);
  383. >  if (keyState[0] = 16777216) or (keyState[0] = 33554432) then
  384.  
  385. >The error was on the 7th line (beginning with if (keyState[0]....)
  386. >When I checked my IM I on page 260 it says that:
  387.  
  388. >TYPE KeyMap = PACKED ARRAY[0..127] OF BOOLEAN;
  389.  
  390. In the old version of think pascal I believe define the Keymap as
  391. PACKED ARRAY[0..3] OF LONGINT, hense John's use of longints to test
  392. the keymap. Think Pascal 4.0 now correctly defines teh keymap as array
  393. of booleans. So you nee to test the specific array element for true
  394. or false. 
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404. Matt
  405.  
  406. - -- 
  407. ___________________________________________________________
  408. Matthew Mora                |   my Mac  Matt_Mora@sri.com
  409. SRI International           |  my unix  mxmora@unix.sri.com
  410. ___________________________________________________________
  411.  
  412. ---------------------------
  413.  
  414. From: cptnerd@access.digex.com (Captain Nerd)
  415. Subject: Anyone used XVT (esp. XVT++)?
  416. Date: 19 May 92 15:39:08 GMT
  417. Organization: Express Access Online Communications, Greenbelt, Maryland USA
  418.  
  419.  
  420.     Hi!
  421.  
  422.     The company I work for is looking to make a portable product that
  423. can work on PCs with Windows, workstations, and possibly Macintoshes (if I
  424. get my way 8^).  We want to use C++, and we have the XVT propaganda sheets 8^),
  425. but I'd like to hear from anyone who has used XVT >>in a production 
  426. environment<<.  If you have also used XVT++, their C++ library, I'd like to
  427. hear from you.  I don't want to know >>what<< you're doing with it, I just
  428. want to know what kind of problems, peculiarities, good things, etc. you've
  429. had with it.  Please e-mail me to save bandwidth.
  430.  
  431.     Thanks in advance!
  432.  
  433.  
  434.  
  435.  
  436. - -- 
  437. | Internet: cptnerd@digex.com |  "From the hard-scrabble back streets, that 
  438. | 70714.105@compuserve.com    |  part of town called 'OOP Alley,' comes a 
  439. champion for the Future, defender of overworked programmers everywhere, 
  440. and foe of all who call themselves 'Management!'  Captain Nerd!"
  441.  
  442. +++++++++++++++++++++++++++
  443.  
  444. From: zeitler@esseye.si.com (David Zeitler)
  445. Organization: Smiths Industries
  446. Date: Wed, 20 May 1992 11:58:47 GMT
  447.  
  448. In <1992May19.153908.25300@access.digex.com> cptnerd@access.digex.com (Captain Nerd) writes:
  449.  
  450. >    Hi!
  451.  
  452. >    The company I work for is looking to make a portable product that
  453. >can work on PCs with Windows, workstations, and possibly Macintoshes (if I
  454. >get my way 8^).  We want to use C++, and we have the XVT propaganda sheets 8^),
  455. >but I'd like to hear from anyone who has used XVT >>in a production 
  456. >environment<<.  If you have also used XVT++, their C++ library, I'd like to
  457. >hear from you.  I don't want to know >>what<< you're doing with it, I just
  458. >want to know what kind of problems, peculiarities, good things, etc. you've
  459. >had with it.  Please e-mail me to save bandwidth.
  460.  
  461. >    Thanks in advance!
  462.  
  463. Please either post information, or email to me as well. I am also interested 
  464. in the real (as opposed to marketing hype) capabilities/value of XVT/XVT++.
  465.  
  466. - ---
  467. Dave Zeitler                zeitler@si.com
  468. Smith's Industries            Ph: (616)241-8168
  469. Aerospace & Defense Systems Inc.    Fax: (616)241-7533
  470. 4141 Eastern Ave, SE
  471. Grand Rapids, MI 49518-8727
  472.  
  473. +++++++++++++++++++++++++++
  474.  
  475. From: weiser@pogo.den.mmc.com (Matt Weiser)
  476. Organization: Martin Marietta WIS
  477. Date: Thu, 21 May 1992 20:32:48 GMT
  478.  
  479. In article <1992May19.153908.25300@access.digex.com>, cptnerd@access.digex.com (Captain Nerd) writes:
  480. >     Hi!
  481. >     The company I work for is looking to make a portable product that
  482. > can work on PCs with Windows, workstations, and possibly Macintoshes (if I
  483. > get my way 8^).  We want to use C++, and we have the XVT propaganda sheets 8^),
  484. > but I'd like to hear from anyone who has used XVT >>in a production 
  485. > environment<<.  If you have also used XVT++, their C++ library, I'd like to
  486. > hear from you.  I don't want to know >>what<< you're doing with it, I just
  487. > want to know what kind of problems, peculiarities, good things, etc. you've
  488. > had with it.  Please e-mail me to save bandwidth.
  489. >     Thanks in advance!
  490.  
  491. We have a development group of 7 who have been working with XVT and XVT++ for
  492. about 2 years now.  We have had success implementing our software with it,
  493. but it drives me crazy.  It does not allow you to do so many things Mac programs
  494. do naturally.  Here are just a couple of the limitations I have personally run into:
  495.  
  496. No Regions
  497. No CopyBits
  498. Very few drawing commands (limits QuickDraw greatly!)
  499. No ability to write resources (specifically STR's)
  500. No GetMouse (you cannot just ask where the mouse is)
  501. No Popup Buttons
  502. Limited Patterns (no custom ones - only theirs)
  503.  
  504. It's basically the lowest common denominator between platforms.  You
  505. loose all the neat Mac things you have come to love.  It does
  506. a good job within its bounds, but don't try to cross them.
  507.  
  508. I'm not super impressed with XVT++.  We have decided to not renew
  509. our licenses for it, choosing to go on our own.
  510.  
  511. Matt Weiser
  512. weiser@pogo.den.mmc.com
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520. ---------------------------
  521.  
  522. From: dac@sactoh0.sac.ca.us (David A. Carlton)
  523. Subject: FOR SALE: TMON Professional
  524. Date: 19 May 92 23:36:37 GMT
  525. Organization: Sacramento Public Access Unix
  526.  
  527. I have an extra copy of TMON Professional still in the box which
  528. never got used by one of my programmers. Original cost $249, I will
  529. let it go for $200 and pay shipping. If you can find it for less
  530. than tell me where and how and I will beat the cost by $50. You
  531. WILL save at least that much!
  532.  
  533. - -- 
  534. #############################################################
  535. # Dave Carlton, Poly Micro Systems, N. Highlands, CA 95660  #
  536. # (916) 332-9224 dac@sactoh0.SAC.CA.US                      #
  537. #############################################################
  538.  
  539. +++++++++++++++++++++++++++
  540.  
  541. From: cvadrnfh@vmsb.is.csupomona.edu
  542. Date: 20 May 92 10:16:26 PST
  543. Organization: California State Polytechnic University, Pomona
  544.  
  545. In article <1992May19.233637.9534@sactoh0.sac.ca.us>, dac@sactoh0.sac.ca.us (David A. Carlton) writes:
  546. > I have an extra copy of TMON Professional still in the box which
  547. > never got used by one of my programmers. Original cost $249, I will
  548. > let it go for $200 and pay shipping. If you can find it for less
  549. > than tell me where and how and I will beat the cost by $50. You
  550. > WILL save at least that much!
  551. > -- 
  552. > #############################################################
  553. > # Dave Carlton, Poly Micro Systems, N. Highlands, CA 95660  #
  554. > # (916) 332-9224 dac@sactoh0.SAC.CA.US                      #
  555. > #############################################################
  556.  
  557. Is your version system 7 compatible.  If so I might be interested but not at $200.00  I can't really afford that.
  558.  
  559. Matt
  560.  
  561. ---------------------------
  562.  
  563. From: juha@skynet.oulu.fi (Juha Pirttil{)
  564. Subject: Determining if user has a printer selected ???
  565. Date: 20 May 92 07:43:01 GMT
  566. Organization: Department of Physics, University of Oulu
  567.  
  568. Hi!
  569.  
  570. I have been wondering if there is a reliable way of determining 
  571. that user has selected a printer. 
  572. I have a program that cheks printer page size etc. when it
  573. starts up. When testing the program my two friends succeeded 
  574. in having no printer selected. The program did not get the 
  575. pageSizes etc correctly and hung. Currently I check the
  576. printRec^^.PRstl.wdev field. I think it should be 0 when
  577. there is no printer selected but it seems that this is 
  578. not true if I have a LaserWriter selected. Sometimes 
  579. I get the alert which says that "You have no printer...."
  580. and sometimes I do not get the alert. So, what method
  581. would you use to determine if there is a printer selected ?
  582.  
  583.  
  584.    Juha Pirttil{
  585.    Department of Physics
  586.    University of Oulu
  587.    Finland
  588.  
  589. +++++++++++++++++++++++++++
  590.  
  591. From: marshall@sdd.hp.com (Marshall Clow)
  592. Organization: Hewlett Packard San Diego Printer Division
  593. Date: Wed, 20 May 1992 16:04:42 GMT
  594.  
  595. In article <1992May20.074301.10973@ousrvr.oulu.fi>, Juha Pirttil{ <juha@skynet.oulu.fi> writes:
  596. > I have been wondering if there is a reliable way of determining 
  597. > that user has selected a printer. 
  598.  
  599. How about checking to see if the printer manager calls ( like PrDefault )
  600. return an error? ( PrError ). 
  601.  
  602. This should determine if there is no printer driver selected.
  603. The only way to determine ( in general, but methods exist for 
  604. AppleTalk printers ) if the user has selected
  605. a printer that doesn't exist is to try to print to it.
  606.  
  607. Marshall Clow
  608. marshall@sdd.hp.com
  609.  
  610.  
  611. +++++++++++++++++++++++++++
  612.  
  613. From: lim@iris.ucdavis.edu (Lloyd Lim)
  614. Date: 21 May 92 05:39:17 GMT
  615. Organization: U.C. Davis - Department of Computer Science
  616.  
  617. In article <1992May20.074301.10973@ousrvr.oulu.fi> juha@skynet.oulu.fi (Juha Pirttil{) writes:
  618. >
  619. >I have been wondering if there is a reliable way of determining 
  620. >that user has selected a printer. 
  621.  
  622. Just call PrError to check for an error immediately after you call PrOpen.
  623. It works fine for me.  In fact, you're supposed to be calling PrError
  624. after every Print Manager call (in the same way you're supposed to call
  625. MemError and ResError for the Memory and Resource Managers).  It's never
  626. too late to learn a habit like defensive programming.
  627.  
  628. +++
  629. Lloyd Lim               Internet: lim@cs.ucdavis.edu
  630. 224 Lysle Leach Hall    America Online: LimUnltd
  631. U.C. Davis              AppleLink: LimUnltd
  632. Davis, CA  95616        CompuServe: 72647,660
  633.  
  634. ---------------------------
  635.  
  636. Subject: Yerk 3.62 available
  637. From: rfl@oddjob.uchicago.edu (Bob Loewenstein)
  638. Date: Wed, 20 May 1992 14:48:46 GMT
  639. Organization: University of Chicago, Astronomy and Astrophysics
  640.  
  641.  
  642. Yerk 3.62 is now available for anonymous ftp at oddjob.uchicago.edu in
  643. directory pub/Yerk.  While 3.60 ran on a Quadra, there was a finite
  644. probability that it might not since there were a few places where code
  645. was being modified. 3.62 fixes this so that I don't think this will
  646. ever be a problem. Also A5 is handle better so that VBL tasks, Time
  647. Manager, Serial Completion Routines, etc are handled much more nicely
  648. for system 7 environments.  3.62 also makes it a bit easier to make
  649. a standalone application with multiple CODE segments. 
  650.  
  651. For those that aren't aware of Yerk -
  652.  
  653. Yerk is an object oriented language based on a Forth Kernel with some
  654. major modifications.  It was originally known as Neon, developed and
  655. sold as a product by Kriya Systems from 1985 to 1989. Several of us at
  656. The University of Chicago have maintained Yerk since its demise as a
  657. product. Because of the possible trademark conflict that Kriya
  658. mentions, we picked the name Yerk, which is at least not an acronym
  659. for anything, but rather stands for Yerkes Observatory, part of the
  660. Department of Astronomy and Astrophysics at U of C.
  661.  
  662.  
  663. MOPS 2.1 is also available at oddjob. MOPS is also a varient of NEON
  664. and is made available by Michael Hore.
  665.  
  666.  
  667. ---------------------------
  668.  
  669. From: neal@farallon.com (Neal Trautman)
  670. Subject: Icon Families and Icon Suites
  671. Date: 20 May 92 14:45:37 GMT
  672. Organization: Farallon Computing, Inc.
  673.  
  674. Hi All,
  675.  
  676. Tech Note #306, on the May Developer's CD, has the
  677. full details on System 7 Finder Icon Families and
  678. Icon Suites.
  679.  
  680. For those of you that don't have access to this
  681. Tech Note, I have included it below.
  682.  
  683. Anyone care to gues what happens if you create
  684. a menu with a title that is 5 bytes long, has
  685. a CHR($01) as the second byte, and a handle
  686. to an icon family as the next 4 bytes??
  687.  
  688. Enjoy...
  689. Neal Trautman
  690. Timbuktu Lead Software Engineer
  691. Farallon Computing, Inc.
  692. neal@farallon.com
  693.  
  694. ==========
  695.   #306:    Drawing Icons the System 7 Way
  696.  
  697. Revised by:    Jim Mensch                      May 1992
  698. Written by:    Jim Mensch and David Collins    October 1991
  699.  
  700. This Technical Note describes how to utilize the built-in System 7 icon drawing
  701. utility. Use this information to better conform to the System 7.0 visual human
  702. interface.
  703.  
  704.  
  705.  
  706. Introduction
  707.  
  708. With the introduction of System 7.0 for the Macintosh, Apple has defined a new
  709. look and feel for many screen elements that better utilize color. Among other
  710. elements, the icons drawn by the Finder and other system components have been
  711. redefined. While Apple has documented how to create this new look for most
  712. elements, Apple has not documented how to draw the icons the way the Finder
  713. does in System 7. This Technical Note discusses all the icon toolkits that the
  714. Finder uses to draw and manipulate the icons on the screen. Two of the calls,
  715. PlotIconID and PlotCIconHandle, are the ones you will probably use the most
  716. since they deal with simply drawing single icons to the screen. Other places in
  717. the Toolbox require that an icon family handle be passed to them to allow the
  718. drawing of color icons. The toolkit provides calls that allow you to create,
  719. draw, and manipulate these handles. What follows is a description of the new
  720. icon data structures and the calls in the icon toolkit.
  721.  
  722.  The New 'ic' Type Resources
  723.  
  724. PlotIconID and PlotCIconHandle allow the use of standard CIcons as documented
  725. in Inside Macintosh Volume V and the use of a new set of icon resources
  726. utilized by the PlotIconID call. This new icon type is actually not a single
  727. resource but a collection of many different icons into a family. Each member of
  728. the family has a consistent resource ID and a resource type indicating what
  729. type of icon data is stored in that particular resource. Currently Apple has
  730. defined three sizes of icons and three different bit depths for each size. The
  731. sizes are large (32x32 pixels), small (16x16 pixels), and mini (12x12 pixels),
  732. and the bit depths are 1, 4, and 8. The actual resource types are defined as
  733. follows:
  734.  
  735. Large1BitMask       =    'ICN#';
  736. Large4BitData       =    'icl4';
  737. Large8BitData       =    'icl8';
  738. Small1BitMask       =    'ics#';
  739. Small4BitData       =    'ics4';
  740. Small8BitData       =    'ics8';
  741. Mini1BitMask        =    'sicn';
  742. Mini4BitData        =    'icm4';
  743. Mini8BitData        =    'icm8';
  744.  
  745. The 1-bit-per-pixel member of each size also contains the mask data for all
  746. icons of that size (yes, this means that all your icons of a certain size must
  747. have the same mask). A 1-bit-per-pixel member must exist for each icon size you
  748. want PlotIconID to use. The icon size to use is determined by the size of the
  749. destination rectangle. If the destination rect is greater than 16 pixels on a
  750. side then the large icon will be used. If the destination rect is 13P16 pixels
  751. on both sides the small icon will be used. If the destination is 12 or less on
  752. each side the mini icon will be used. The bit depth is determined by the device
  753. of the grafPort you plot into at drawing time. Be sure that you always create a
  754. color grafPort any time you want to use color icons.
  755.  
  756.  Icon Families (or Suites and Caches As the Tool Set Refers to Them)
  757.  
  758. An icon family is simply a collection of icon handles that contain up to one
  759. image of each bit depth and size for a given icon. By using families, you
  760. remove the need to determine which size or depth of icon to use when drawing
  761. into a given rectangle. Several system routines can take an icon family handle
  762. when an icon is requested (the Notification Manager for example) so that the
  763. proper color icons can be used if available. An icon family can be fully
  764. populated (every possible size or depth available) or it can have only those
  765. icons that exist or are needed. In the case of a sparsely populated icon
  766. family, if the proper icon is not available the icon tool set will pick an
  767. appropriate substitute that will produce the best results.
  768.  
  769. An icon cache is a family that also has a ProcPtr and a refCon. The main
  770. difference between a cache and a family is that the elements of the cacheUs
  771. array are sparsely populated. When using an icon cache, the system either will
  772. use the entry in the icon family portion of the cache, or if the desired
  773. element is empty, it will call your procPtr and request the data for the icon.
  774. The Proc has the following calling convention:
  775.  
  776. Function GetAnIcon(theType:ResType; yourDataPtr:Ptr):Handle;
  777.  
  778. This function should return either the icon data to be used to draw or NIL to
  779. signify that this entry in the icon cache does not exist. Icon caches can be
  780. used with all icon family calls and have a few extra calls used to manipulate
  781. them.
  782.  
  783. Now that we know about the different data types letUs examine how to manipulate
  784. the drawing:
  785.  
  786.  Drawing Modes or Transforms
  787.  
  788. In addition to being drawn in various sizes and bit depths, icons can be drawn
  789. with different RModesS or transforms. Transforms are analogous to certain
  790. Finder states for the icons. For example, the transform that you would use to
  791. show an icon of a disk that has been ejected is ttOffline. Here is a list of
  792. the current transforms that are available:
  793.  
  794. { IconTransformType values }
  795. ttNone                =    $0;
  796. ttDisabled            =    $1;
  797. ttOffline             =    $2;
  798. ttOpen                =    $3;
  799. ttSelected            =    $4000;
  800. ttSelectedDisabled    =    (ttSelected + ttDisabled);
  801. ttSelectedOffline     =    (ttSelected + ttOffline);
  802. ttSelectedOpen        =    (ttSelected + ttOpen);
  803.  
  804. The actual appearance of the icon drawn by each transform type may vary with
  805. future system software, so you should always try to use the transform that best
  806. fits the state it represents in your application. In this way you will be
  807. consistent with any possible future changes to the look and feel of regular
  808. system icons. Note that the ttSelected transform can be added to any of the
  809. other transform types. Additional transform types exist for displaying the icon
  810. of a file inside your application that use the Finder label colors to color the
  811. icon. To determine the proper label for a fileUs icon, you can check bits 1P3
  812. of the fdFlags field in the fileUs Finder info (See the File Manager chapter in
  813. Inside Macintosh Volume IV for more information). These bits contain a number
  814. from 0 to 7. Simply add the corresponding ttLabel value to the transform that
  815. you give the call. The label values are defined like this:
  816.  
  817. ttLabel0            =    $0000;
  818. ttLabel1            =    $0100;
  819. ttLabel2            =    $0200;
  820. ttLabel3            =    $0300;
  821. ttLabel4            =    $0400;
  822. ttLabel5            =    $0500;
  823. ttLabel6            =    $0600;
  824. ttLabel7            =    $0700;
  825.  
  826.  Alignment
  827.  
  828. Most icons do not fully fill their rectangle, and it is sometimes necessary to
  829. draw an icon relative to other data (like menu text). In these instances it
  830. would be nice to be able to have the icon move in its rectangle so that it will
  831. be at a predictable location in the destination rectangle. Therefore, when
  832. drawing an icon you can pass one of these standard alignments in the alignment
  833. parameter or you can add a vertical alignment to a horizontal alignment to
  834. create a composite alignment value.
  835.  
  836. atNone              =    $0;
  837. atVerticalCenter    =    $1;
  838. atTop               =    $2;
  839. atBottom            =    $3;
  840. atHorizontalCenter  =    $4;
  841. atLeft              =    $8;
  842. atRight             =    $C;
  843.  
  844.  And Now (Drum Roll Please) the Calls and What to Pass
  845.  
  846. Now that we have defined every major data type we can think of, here is the
  847. real meat of this Tech Note: the actual calls themselves. I am  providing only
  848. the Pascal and C interfaces here since they do not appear in your current MPW
  849. Interfaces folder. Disk copies of these can be found on AppleLink and on
  850. current and future versions of the Developer CD Series  disc. 
  851. Icon Family Calls
  852.  
  853. Function NewIconSuite(var theSuite:Handle):OSErr;
  854.  
  855. This call returns an empty icon family handle with all members set to NIL.
  856.  
  857. Function AddIconToSuite(theIconData: Handle; theSuite:Handle;
  858. theType:ResType):OSErr;
  859.  
  860. This call will add the data in theIconData into the suite at the location
  861. reserved for theType of icon data. This call will replace any old data in that
  862. slot without disposing of it, so you may want to call GetIconFromSuite to
  863. obtain the old handle (if any) to dispose. This call will be used most often
  864. with the NewIconSuite call to fill the empty family after itUs created.
  865.  
  866. Function GetIconFromSuite(Var theIconData:Handle; theSuite:Handle; 
  867. theType:ResType):OSErr;
  868.  
  869. This call will return a handle to the pixel data of the family member of
  870. theSuite specified by theType. If you intend to dispose of this handle, be sure
  871. to call AddIconToSuite with a NIL handle to zero out the family entry.
  872.  
  873. Function ForEachIconDo(theSuite: Handle; theSelector:Longint; 
  874. actionProc:procPtr; yourData: UNIV ptr):OSErr;
  875.  
  876. This routine will call your actionProc for each icon in the family specified by
  877. theSelector and theSuite. TheSelector is a bit level flag that specifies which
  878. family members to operate on; they can be added together to create composite
  879. selectors that work on several different family members. The values for
  880. theSelector are as follows:
  881.  
  882.  
  883.  
  884.     { IconSelectorValue masks }
  885. svLarge1Bit           =    $00000001;
  886. svLarge4Bit           =    $00000002;
  887. svLarge8Bit           =    $00000004;
  888. svSmall1Bit           =    $00000100;
  889. svSmall4Bit           =    $00000200;
  890. svSmall8Bit           =    $00000400;
  891. svMini1Bit            =    $00010000;
  892. svMini4Bit            =    $00020000;
  893. svMini8Bit            =    $00040000;
  894. svAllLargeData        =    $000000ff;
  895. svAllSmallData        =    $0000ff00;
  896. svAllMiniData         =    $00ff0000;
  897. svAll1BitData         =    (svLarge1Bit + svSmall1Bit + svMini1Bit);
  898. svAll4BitData         =    (svLarge4Bit + svSmall4Bit + svMini4Bit);
  899. svAll8BitData         =    (svLarge8Bit + svSmall8Bit + svMini8Bit);
  900. svAllAvailableData    =    $ffffffff;
  901.  
  902. The action procedure that gets called for each icon type selected for the
  903. family is a Pascal type function with the following interface:
  904.  
  905. Function ActionProc(var theIconData:Handle; theType:ResType; yourDataPtr: UNIV
  906. ptr):OSErr;
  907.  
  908. theIconData is passed by reference here so that your routine can modify the
  909. contents of the suite directly. yourDataPtr is the value passed when you called
  910. forEachIconDo; it allows you to easily communicate with your application. The
  911. action procedure returns an OSErr; if any value other than noErr is returned,
  912. forEachIconDo will stop processing immediately and return the error passed.
  913. (Note: This implies that the icons selected may only be partially operated on.)
  914. There is no guaranteed order in which the icons get operated on.
  915.  
  916. Function GetIconSuite(Var theSuite: Handle; theID:Integer;
  917. theSelector:Longint):OSErr;
  918.  
  919. GetIconSuite will create a new icon family and then fill it with the icons with
  920. the passed ID, of the indicated types in theSelector, from the current resource
  921. chain. This is the call you will probably use most often to create an icon
  922. family. Note: If you SetResLoad(False) before making this call, the suite will
  923. be filled with unloaded resource handles.
  924.  
  925. Function PlotIconSuite(theRect:Rect; alignment:Integer; transform:Integer;
  926.     theSuite:Handle):OSErr;
  927.  
  928. This call renders the proper icon image from the passed icon family based on
  929. the bit depth of the display you are using and the rectangle that you have
  930. passed. Alignment and transform are applied to the icon selected for drawing
  931. and then the icon is plotted into the current grafPort. PlotIconSuite chooses
  932. the appropriate icon based primarily on size; once the proper icon size is
  933. determined (based on the destination rectangle) the present member of that size
  934. with the deepest bit depth that the current device can use is selected. A size
  935. category is considered present if the black and white member (with mask) is
  936. present, ICN#, ics#, or icm#. PlotIconSuite can be used for both picture
  937. accumulation and printing.
  938.  
  939. Function DisposeIconSuite(theSuite:Handle; disposeData:Boolean):OSErr;
  940.  
  941. This call disposes the icon family handle itself; in addition if disposeData is
  942. true, any of the icon data handles that do not belong to a resource fork will
  943. also be disposed.
  944.  
  945. Function SetSuiteLabel(theSuite: Handle; theLabel:Integer):OSErr;
  946.  
  947. This call allows you to specify a label that is used to draw an icon of this
  948. suite when noLabel is specified in PlotIconSuite. This is used primarily when
  949. you want to make sure that a family passed to a system routine gets drawn with
  950. the proper label. The default label can be overridden by specifying a label in
  951. PlotIconSuite.
  952.  
  953. Function GetSuiteLabel(theSuite:Handle; var theLabel:Integer):OSErr;
  954.  
  955. returns any label set with SetSuiteLabel previously.
  956.  
  957. Icon Cache Calls
  958.  
  959. In addition to the icon family calls above, icon caches have these additional
  960. calls:  
  961. Function MakeIconCache(VAR theCache:Handle; GetAnIcon:ProcPtr;
  962.                         yourDataPtr:Ptr):OSErr;
  963.  
  964. This call creates an empty icon cache similar to NewIconSuite, and associates
  965. the additional icon loading proc and data value with the family.
  966.  
  967. Function LoadIconCache(theRect:Rect; alignment:Integer; transform:Integer;
  968.     theSuite:Handle):OSErr;
  969.  
  970. This call allows you to preflight the loading of certain elements of your icon
  971. cache. This is handy when you suspect that certain drawing operations will
  972. occur at a time not convenient for you to load your icon data (for example,
  973. when your resource fork might not be in open chain). LoadIconCache takes the
  974. same parameters as PlotIconSuite and uses the same criterion to select the icon
  975. to load. Be sure that the grafPort is set properly before you make this call
  976. since it is part of the criterion for determining which icon to load.
  977.  
  978. The following four calls are provided to allow you to change the dataPtr and
  979. procPtr associated with an icon cache:
  980.  
  981. Function GetCacheData(theCache:Handle; VAR yourDataPtr:Ptr):OSErr;
  982. Function SetCacheData(theCache:Handle;     yourDataPtr:Ptr):OSErr;
  983. Function GetCacheProc(theCache:Handle; VAR theProc:ProcPtr):OSErr;
  984. Function SetCacheProc(theCache:Handle;     theProc:ProcPtr):OSErr;
  985.  
  986.  
  987.  
  988. Plotting Icons Not Part of a Suite
  989.  
  990. The following two calls are grouped because they are very similar. These
  991. routines let you simply plot an icon to the screen without having to create an
  992. icon suite. They are also good if you have a cicn instead of an icon family.
  993.  
  994. FUNCTION PlotIconID(TheRect: Rect; Align: Integer; Transform: Integer;
  995. TheResID: INTEGER): OSErr;
  996.  
  997. FUNCTION PlotCIconHandle(TheRect: Rect; Align: Integer; transform: Integer;
  998. TheCIcon: CIconHandle): OSErr;
  999.  
  1000. TheRect is the destination rectangle to draw the indicated icon into.
  1001.  
  1002. Align is the alignment method to use if the icon does not exactly fit the
  1003. rectangle given. Pass zero for this value. See the next version of this Tech
  1004. Note for more information on alignment.
  1005.  
  1006. Transform indicated the desired appearance of the icon on the screen.
  1007.  
  1008. TheResID is the resource ID of the family of 'ic' type resources to use. If the
  1009. correct bit depth or size required is not defined, the closest-fitting one will
  1010. be used.
  1011.  
  1012. TheCIcon is a handle that you get to a standard QuickDraw color icon. Call
  1013. GetCIcon to load these and do not forget to dispose of it when you are done
  1014. (sometimes they can take up quite a bit of memory).
  1015.  
  1016. Both functions return an error code if all did not go well with the drawing, or
  1017. in the case of the PlotIconID call, if the indicated icon family could not be
  1018. used.    
  1019.  
  1020. Miscellaneous Calls
  1021.  
  1022. Function GetLabelColor(labelNumber:Integer; var labelColor:RGBColor; VAR
  1023. LabelString:str255):OSErr;
  1024.  
  1025. This call returns the actual color and string used in the label menu of the
  1026. Finder and the labelUs Control Panel. This information is provided in case you
  1027. wish to include the label text or color when displaying a fileUs icon in your
  1028. application.
  1029.  
  1030. Function IconSuiteToRgn(theRgn: RgnHandle; iconRect:Rect Alignment:Integer;
  1031. iconSuite:Handle):OSErr;
  1032. Function IconIDToRgn(theRgn: RgnHandle; iconRect:Rect Alignment:Integer;
  1033. iconID:Integer):OSErr;
  1034.  
  1035. These routines will create a region from the mask of the icon selected by the
  1036. Rect and Alignment passed. This will allow you to do accurate hit testing and
  1037. outline dragging of an icon in your application. TheRgn handle must have been
  1038. previously allocated before you make this call.
  1039.  
  1040. Function RectInIconSuite(testRect:Rect; iconRect:Rect; Alignment:Integer;
  1041. IconSuite:Handle):Boolean;
  1042. Function RectInIconID(testRect:Rect; iconRect:Rect; Alignment:Integer;
  1043. IconID:Integer):Boolean;
  1044. Function PtInIconSuite(testPoint:Point; iconRect:Rect; Alignment:Integer;
  1045. IconSuite:Handle):Boolean;
  1046. Function PtInIconID(testPoint:Point; iconRect:Rect; Alignment:Integer;
  1047. IconID:Integer):Boolean;
  1048.  
  1049. These calls hit test the passed point or rect again the icon indicated. The
  1050. iconRect, alignment, and grafPort should be the same as when the icon was drawn
  1051. last. They return true if the point is in the icon mask, or if the rect
  1052. intersects the icon mask.
  1053.  
  1054. Glue for C and Pascal
  1055.  
  1056. Since the standard interface files do not contain the glue for these calls,  I
  1057. am going to include it here since Tech Notes sometimes get distributed in
  1058. electronic format and if all else fails you can copy and paste it.
  1059.  
  1060. { Pascal Glue }
  1061. FUNCTION PlotIconID(theRect: Rect;align: Integer;transform: Integer;
  1062.     theResID: INTEGER): OSErr;    INLINE $303C, $0500, $ABC9;
  1063. FUNCTION NewIconSuite(VAR theIconSuite: Handle): OSErr;    INLINE $303C, $0207, $ABC9;
  1064. FUNCTION AddIconToSuite(theIconData: Handle;theSuite: Handle;theType: ResType): OSErr;
  1065.     INLINE $303C, $0608, $ABC9;
  1066. FUNCTION GetIconFromSuite(VAR theIconData: Handle;theSuite: Handle;theType: ResType): OSErr;
  1067.     INLINE $303C, $0609, $ABC9;
  1068. FUNCTION ForEachIconDo(theSuite: Handle;selector: Integer;action: ProcPtr;
  1069.     yourDataPtr: Ptr): OSErr;    INLINE $303C, $060A, $ABC9;
  1070. FUNCTION GetIconSuite(VAR theIconSuite: Handle;theResID: INTEGER;
  1071.     selector: Integer): OSErr;    INLINE $303C, $0501, $ABC9;
  1072. FUNCTION DisposeIconSuite(theIconSuite: Handle;disposeData: BOOLEAN): OSErr;
  1073.     INLINE $303C, $0302, $ABC9;    
  1074. FUNCTION PlotIconSuite(theRect: Rect;align: Integer;transform: Integer;
  1075.     theIconSuite: Handle): OSErr;    INLINE $303C, $0603, $ABC9;    
  1076. FUNCTION MakeIconCache(VAR theHandle: Handle;makeIcon: procPtr;
  1077.     yourDataPtr: UNIV Ptr): OSErr;    INLINE $303C, $0604, $ABC9;    
  1078. FUNCTION LoadIconCache(theRect: Rect;align: Integer;transform: Integer;
  1079.     theIconCache: Handle): OSErr;    INLINE $303C, $0606, $ABC9;
  1080. FUNCTION GetLabel(labelNumber: INTEGER; VAR labelColor: RGBColor;
  1081.     VAR labelString: Str255): OSErr;    INLINE $303C, $050B, $ABC9;    
  1082. FUNCTION PtInIconID(testPt: Point; iconRect: Rect; align: Integer;
  1083.      iconID: INTEGER): BOOLEAN;    INLINE $303C, $060D, $ABC9;
  1084. FUNCTION PtInIconSuite(testPt: Point; iconRect: Rect;align: Integer;
  1085.     theIconSuite: Handle): BOOLEAN;    INLINE $303C, $070E, $ABC9;
  1086. FUNCTION RectInIconID(testRect: Rect; iconRect: Rect;align: Integer;
  1087.     iconID: INTEGER): BOOLEAN;    INLINE $303C, $0610, $ABC9;
  1088. FUNCTION RectInIconSuite(testRect: Rect; iconRect: Rect;align: Integer;
  1089.     theIconSuite: Handle): BOOLEAN;    INLINE $303C, $0711, $ABC9;
  1090. FUNCTION IconIDToRgn(theRgn: RgnHandle; iconRect: Rect;align: Integer;
  1091.     iconID: INTEGER): OSErr;    INLINE $303C, $0913, $ABC9;
  1092. FUNCTION IconSuiteToRgn(theRgn: RgnHandle; iconRect: Rect;align: Integer;
  1093.     theIconSuite: Handle): OSErr;    INLINE $303C, $0914, $ABC9;
  1094. FUNCTION SetSuiteLabel(theSuite: Handle; theLabel: INTEGER): OSErr; 
  1095.     INLINE $303C, $0316, $ABC9;
  1096. FUNCTION GetSuiteLabel(theSuite: Handle): INTEGER; INLINE $303C, $0217, $ABC9;
  1097. FUNCTION GetIconCacheData(theCache: Handle; VAR theData: Ptr): OSErr;
  1098.     INLINE $303C, $0419, $ABC9;
  1099. FUNCTION SetIconCacheData(theCache: Handle; theData: Ptr): OSErr;
  1100.     INLINE $303C, $041A, $ABC9;
  1101. FUNCTION GetIconCacheProc(theCache: Handle; VAR theProc: ProcPtr): OSErr;
  1102.     INLINE $303C, $041B, $ABC9;
  1103. FUNCTION SetIconCacheProc(theCache: Handle; theProc: procPtr): OSErr;
  1104.     INLINE $303C, $041C, $ABC9;
  1105. FUNCTION PlotCIconHandle(theRect: Rect; align: INTEGER; transform: INTEGER;
  1106.     theCIcon: CIconHandle): OSErr;    INLINE $303C, $061F, $ABC9;
  1107.  
  1108. /* C Glue */
  1109. pascal OSErr PlotIconID(const Rect *theRect, short align, short  transform, short theResID)
  1110.      = {0x303C, 0x0500, 0xABC9};
  1111. pascal OSErr NewIconSuite(Handle *theIconSuite) = {0x303C, 0x0207, 0xABC9};
  1112. pascal OSErr AddIconToSuite(Handle theIconData,Handle theSuite,ResType theType)= {0x303C, 0x0608, 0xABC9};
  1113. pascal OSErr GetIconFromSuite(Handle *theIconData,Handle theSuite,ResType theType)= {0x303C, 0x0609, 0xABC9};
  1114. pascal OSErr ForEachIconDo(Handle theSuite,short selector,ProcPtr action,void *yourDataPtr)
  1115.     = {0x303C, 0x080A, 0xABC9};
  1116. pascal OSErr GetIconSuite(Handle *theIconSuite,short theResID,short selector)= {0x303C, 0x0501, 0xABC9};    
  1117. pascal OSErr DisposeIconSuite(Handle theIconSuite,Boolean disposeData)= {0x303C, 0x0302, 0xABC9};
  1118. pascal OSErr PlotIconSuite(const Rect *theRect,short align,short transform,Handle theIconSuite)
  1119.     = {0x303C, 0x0603, 0xABC9};
  1120. pascal OSErr MakeIconCache(Handle *theHandle,ProcPtr makeIcon,void *yourDataPtr)= {0x303C, 0x0604, 0xABC9};
  1121. pascal OSErr LoadIconCache(const Rect *theRect,short align,short transform,Handle theIconCache)
  1122.     = {0x303C, 0x0606, 0xABC9};
  1123. pascal OSErr GetLabel(short labelNumber,RGBColor *labelColor,Str255 labelString)= {0x303c, 0x050B, 0xABC9};
  1124. pascal Boolean PtInIconID(Point testPt,Rect *iconRect,short alignment,short iconID)= {0x303c, 0x060D, 0xABC9};
  1125. pascal Boolean PtInIconSuite(Point testPt,Rect *iconRect,short alignment,Handle theIconSuite)
  1126.     = {0x303c, 0x070E, 0xABC9};
  1127. pascal Boolean RectInIconID(Rect *testRect,Rect *iconRect,short alignment,short iconID)
  1128.     = {0x303c, 0x0610, 0xABC9};
  1129. pascal Boolean RectInIconSuite(Rect *testRect,Rect *iconRect,short alignment,Handle theIconSuite)
  1130.     = {0x303c, 0x0711, 0xABC9};
  1131. pascal OSErr IconIDToRgn(RgnHandle theRgn,Rect *iconRect,short alignment,short iconID)
  1132.     = {0x303c, 0x0613, 0xABC9};
  1133. pascal OSErr IconSuiteToRgn(RgnHandle theRgn,Rect *iconRect,short alignment,Handle theIconSuite)
  1134.     = {0x303c, 0x0714, 0xABC9};
  1135. pascal OSErr SetSuiteLabel(Handle theSuite, short theLabel)= {0x303C, 0x0316, 0xABC9};
  1136. pascal short GetSuiteLabel(Handle theSuite)= {0x303C, 0x0217, 0xABC9};    
  1137. pascal OSErr GetIconCacheData(Handle theCache, void **theData)= {0x303C, 0x0419, 0xABC9};    
  1138. pascal OSErr SetIconCacheData(Handle theCache, void *theData)= {0x303C, 0x041A, 0xABC9};    
  1139. pascal OSErr GetIconCacheProc(Handle theCache, ProcPtr *theProc)= {0x303C, 0x041B, 0xABC9};    
  1140. pascal OSErr SetIconCacheProc(Handle theCache, ProcPtr theProc)= {0x303C, 0x041C, 0xABC9};
  1141. pascal OSErr PlotSICNHandle(const Rect *theRect,short align,short transform,Handle theSICN)
  1142.     = {0x303C, 0x061E, 0xABC9};
  1143. pascal OSErr PlotCIconHandle(const Rect *theRect,short align,short transform,CIconHandle theCIcon)
  1144.     = {0x303C, 0x061F, 0xABC9};
  1145. pascal OSErr SetLabel(short labelNumber, const RGBColor *, ConstStr255Param)
  1146.     = {0x303C, 0x050C, 0xABC9};
  1147.  
  1148. ===
  1149.  
  1150. +++++++++++++++++++++++++++
  1151.  
  1152. From: lim@iris.ucdavis.edu (Lloyd Lim)
  1153. Date: 21 May 92 06:06:28 GMT
  1154. Organization: U.C. Davis - Department of Computer Science
  1155.  
  1156. In article <272@farallonfarallon.com> neal@farallon.com (Neal Trautman) writes:
  1157. >
  1158. >Tech Note #306, on the May Developer's CD, has the
  1159. >full details on System 7 Finder Icon Families and
  1160. >Icon Suites.
  1161. >
  1162. >[...]
  1163.  
  1164. I didn't get my CD yet - thanks for the preview.
  1165.  
  1166. The routines look really handy.  But no Gestalt selector?  Sigh.
  1167. Back to TrapAvailable(0xABC9) or an "informational" selector.
  1168. The old ways never die.
  1169.  
  1170. I think a big problem with Gestalt is that the need for selectors
  1171. is usually discovered after the fact.  That, and bugs like the
  1172. Resource Manager selector.
  1173.  
  1174. +++
  1175. Lloyd Lim               Internet: lim@cs.ucdavis.edu
  1176. 224 Lysle Leach Hall    America Online: LimUnltd
  1177. U.C. Davis              AppleLink: LimUnltd
  1178. Davis, CA  95616        CompuServe: 72647,660
  1179.  
  1180. ---------------------------
  1181.  
  1182. End of C.S.M.P. Digest
  1183. **********************
  1184.